package version1;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

/**
 * 版本1--封装【拓展】
 * Mysql工具类
 *1.数据库：地址、用户名、密码、私有属性--静态化【本类直接调用】
 *2.静态方法【本类直接调用】getParam(String 外置文件路径)
 *    目的：使用方法调用外部文件   db_mysql.properties
 *    db_mysql.properties  对应  java   Properties类：读取键值对形式信息
 *    Properties类   提供方法   load()   读取配置文件信息【键值对--数据库基本信息】
 *3.通过封装概念--连接成功数据【通用一个类链接Mysql和Oracle】
 *
 *
 * */


public class Mysql {
    //1.任何数据库具备：地址、用户名、密码--私有静态属性
    private static String url;
    private static String username;
    private static String password;
    //2.静态方法：getParam(String 路径)---连接数据库--读取信息
//2.1 配置文件：键值对出现,保存数据库对应的基本信息 xxx.properties
//2.2 Properties类--读取xxx.properties配置文件信息
    public static void getParam(String fileName) throws IOException {
        //2.2 Properties类--读取xxx.properties配置文件信息
        Properties p=new Properties();
        //2.3外置文件读取--借助IO--搬运数据--InputStream
        InputStream fis=
                //Mysql.class  表示当前Mysql类的Class对象
                Mysql.class.getClassLoader().getResourceAsStream(fileName);
        p.load(fis);
        //2.4读取数据库基本信息【url】用户、密码】复制结合当前对象【URL、用户、密码】
        //Properties类--提供方法getProperty() 读取db_mysql.properties中键
        url=p.getProperty("url");
        username=p.getProperty("username");
        password=p.getProperty("password");
        System.out.println("测试连接成功"+url+username+password);

    }

    public static void main(String[] args) throws SQLException, IOException {
        //测试封装概念--链接成功数据库
        Mysql.getParam("db_mysql.properties");
        //参考Mysql封装，写Oracle封装
        //【作业2】
        //链接成功Mysql---book表--增加一条操作记录
        //1.创建连接----Connection  代表java链接成功数据库
        Connection con=DriverManager.getConnection(url,username,password);
        //2.执行sql--Statement   代表java执行数据
        Statement st=con.createStatement();
        //3.【CRUD操作：增删改 executeUpdate（）】  查 executeQuery
        String sql="insert into book values(6,‘余华’,'活着',79,'2010年',80,'否')";
        int rows=st.executeUpdate(sql);//执行增删改，返回值  int类型
        System.out.println("成功添加了"+rows+"一条记录");

        //4.关闭连接--Statement---Connection
        st.close();
        con.close();

    }

}
